// 好友列表仓库
import {
	defineStore
} from "pinia"


let useFriend = defineStore("friend", {
	state: () => {
		return {
			// 好友列表
			friendList: null,
			findInput: "",
			FilterValue: '全部',
			FilterOptions: ['全部', '在线', '离线']
		}
	},
	getters: {
		getFriendList(state) {
			// 通过findInput这个值，来匹配对应的好友    
			if (!state.friendList) {
				return [];
			} else if (state.friendList.length == 0) {
				return [];
			} else {
				// 使用匹配值，过滤好友的信息    
				if (!state.findInput && state.FilterValue === "全部") {
					return state.friendList;
				} else {
					let findFriend = [];
					const regex = new RegExp(state.findInput, 'i'); // 创建正则表达式，'i'表示不区分大小写    
					// 使用过滤方法和正则表达式来匹配数据    
					findFriend = state.friendList.filter((value) => {
						if (state.FilterValue === "全部") {
							console.log();
						} else if (state.FilterValue === value.state) {
							console.log();
						} else {
							return false;
						}
						return regex.test(value.remark) || regex.test(value.message.nickname) || regex
							.test(value.message.username)
					});
					return findFriend;
				}
			}
		},
		// 获取选项列表
		getOptionList(state) {
			let options = [];
			if (state.friendList) {
				state.friendList.forEach((unit, index) => {
					options.push({
						value: unit.friendId,
						label: unit.remark || unit.message.username,
					})
				})
			}
			return options;
		}
	},
	actions: {
		updateFriendData(friendList) {
			this.friendList = friendList;
		},
		// 通过ajax向后端请求更新好友相关的数据
		renewData(axios, friendId) {
			axios.post("/users/getFriendMessage", {
				findID: friendId
			}).then((rls) => {
				this.friendList = rls.data.data;
			}).catch((error) => {
				console.log(error);
			});
		},
		// 按照好友id，查找好友信息
		findIndexById(id) {
			if (this.friendList) {
				for (let i = 0; i < this.friendList.length; i++) {
					if (this.friendList[i].friendId == id) {
						return this.friendList[i]; // 如果找到匹配的_id，返回对象   
					}
				}
			}
			return -1; // 如果遍历完数组都没有找到匹配的_id，返回-1    
		},
		// 根据id，设置用户的当前在线状态
		setStateById(id, state) {
			if (this.friendList) {
				for (let i = 0; i < this.friendList.length; i++) {
					if (this.friendList[i].friendId == id) {
						this.friendList[i].state = state;
						return true;
					}
				}
			}
			return false; // 如果遍历完数组都没有找到匹配的_id，返回-1    
		},
	},
})


// 默认导出仓库对象
export default useFriend;